3D printer and inventory control and distribution system for 3D designs

ABSTRACT

A digital platform enables 3D printing where the designs are protected from piracy/redistribution. A single board computer (SBC) communicates with a first server and a second server. The SBC requests a unique hardware ID from the first server, which assigns and sends the ID to the SBC. The SBC submits the ID and a secret key to the second server to request registration of a user and a printer, and the second server sends private certs, a client ID, and a unique public identifier to the SBC. The second server also receives and stores 3D print designs through a designer portal, and on-demand displays the designs in a GUI screen. The SBC user may purchase a 3D print design, and the second server, in response, sends an access token to the SBC. The SBC redeems the access token for a selected 3D print, and the second server adjusts gcode for the selected 3D design for the particular printer, and streams the adjusted gcode to the printer through the SBC, thereby protecting the code from unauthorized user/replication.

CROSS REFERENCES TO RELATED APPLICATIONS

This application claims priority on U.S. Provisional Application Ser.No. 62/433,907, filed on Dec. 14, 2016, the disclosures of which areincorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to improvements in 3D printing and 3Ddesigns that may be downloaded and printed on a 3D printer, and moreparticularly to apparatus, systems, and a method for protecting such 3Ddesigns when distributed to purchasers in retail or online storeenvironments.

BACKGROUND OF THE INVENTION

Three-dimensional (3D) printing, also referred to as additivemanufacturing, is a process in which successive layers of a material,commonly plastic, are deposited to form a three-dimensional object. Thedefinition for the 3D object typically resides in digital data, whichmay originate as a three-dimensional computer aided design (i.e., solid“digital” models) of the object, or may be derived from a 3D scan of theactual object. The digital surface definition for the object istypically stored in the STL (stereolithography) file format that isnative to CAD software developed by 3D Systems, Inc, and is used by the3D printer to manufacture the object.

Injection molding tends to be less expensive for the production ofgreater quantities of an object. However, 3D printing is faster, and ismore cost-effective where relatively few parts are desired/printed,which is common for the prototyping and proof-of-concept required fordevelopment of new designs, and also for the consumer 3D printingcommunity and marketplace (see e.g., Pinshape: Free 3D Printable Filesand Designs; Trinpy; Guaranteed Printable Designs for your Desktop 3DPrinter: and 3dFilemarket.com A Growing 3D printing Community).

Few of the available repositories of 3D Printable Designs charge a feefor the downloading of its digital data. One of the drawbacks ofcharging a fee for such downloads is that once the source code has beenobtained, the person who made the purchase now has possession of thecode and can print as many copies as desired. Moreover, the one-timepurchaser could even remarket the design, perhaps even without the useof public advertising, so that the designer may never become aware ofthe violation of the copyright in his/her original work. Software thatis made readily available may enter the public domain.

To counteract piracy, and help enforce copyrights associated withsoftware and other works, Digital Rights Management (DRM) schemes aredeveloped and deployed in the form of access control technologies. Oneof the oldest versions of DRM is the product key required for theinstallation of software on a computer. Newer types of DRM are used tolimit the alteration and unauthorized copying/distribution of e-books.

The general provision of a system for copying data and limiting theextent of such copying has only been partially addressed in the priorart, as shown by the following: U.S. Pat. No. 6,282,654 to Ikeda; U.S.Pat. No. 6,463,538 to Elteto; U.S. Patent App. Pub. No. 2003/0018895;U.S. Pat. No. 6,681,212 to Zeng; U.S. Pat. No. 6,782,190 to Morito; U.S.Pat. No. 6,904,527 to Parlour; U.S. Pat. No. 7,111,285 to Smith; U.S.Pat. No. 7,155,415 to Russell; U.S. Pat. No. 7,130,831 to Howard; U.S.Pat. No. 7,627,119 to Bussert; U.S. Pat. No. 7,868,899 to Fennery; andU.S. Pat. No. RE43,936 to Isaacson. See also, U.S. Pat. No. 8,234,715 toZollinger, and U.S. Pat. No. 9,699,519 to Watson.

However, an improved security system is thus necessary for the securedistribution of a digital 3D print file. The present invention providesseveral solutions to overcome drawbacks of the prior art, and whichserve to protect the intellectual property of 3D designers.

OBJECTS OF THE INVENTION

It is an object of the invention to provide apparatus and a method ofprotecting 3D printable designs from unauthorized printing.

It is another object of the invention to provide an app store from which3D designs are downloadable for printing, but only according to adefined print/usage limit, and with the source code being protected frompiracy.

It is a further object of the invention to provide an app store fromwhich 3D designs are downloadable for printing, and which deletes thesource code after a pre-determined time period.

It is another object of the invention to provide an app store from which3D designs are downloadable for printing, and which deletes the sourcecode after a pre-determined number of prints are made therefrom.

It is also an object of the invention to provide a new 3D printer thatis configured to accept a unique print card that may control theprinting of 3D designs therefrom.

Further objects and advantages of the invention will become apparentfrom the following description and claims, and from the accompanyingdrawings.

SUMMARY OF THE INVENTION

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

Apparatus and a method are disclosed to protect the source codes (STLFILE) that interacts with a CAD or 3D printer head operating system. Themethod contains three categories of storing the source codes (STL) intocodes that delete while printing, codes that remain on the device andcannot be redistributed, and codes that have a ticker (codes that deletein a time range or after a specific number of usages). This methodsolves a problem with the existing 3D print industry with the piracy oftheir design codes, and allows for protecting of the IP of the design.By doing this we can store existing brands because we can protect thedesign codes from being redistributed. Designers are beginning toprotect the designs they print, and the apparatus and method disclosedherein seeks to protect those designs from illegal redistribution. Withthe disclosed apparatus and/or method, the codes are protected accordingto those three categories because it allows for brands to sell theirproducts, and correspondingly allows the customer to print the objectaccording to the restrictions imposed by the purchased category.Therefore, designers and businesses can market special designs accordingto a time limit, or based on an exact number or printable copies, afterwhich the code is removed from the customer's storage device (e.g., RAM,hard drive, etc.).

BRIEF DESCRIPTION OF THE DRAWINGS

The description of the various example embodiments is explained inconjunction with appended drawings, in which:

FIG. 1 discloses a flow chart illustrating various aspect of the 3DPrinter and Computer System disclosed herein;

FIG. 2 discloses a flow chart illustrating three typologies for a methodof controlling a 3D Printer and Inventory Control and DistributionSystem;

FIG. 3 illustrates how 3D printing works based on a single boardcomputer;

FIG. 4 illustrates how 3D printing works using a desktop app;

FIG. 5 illustrates a first series of registration steps for a singleboard computer in accordance with the present invention;

FIG. 6 illustrates a second series of registration steps for a singleboard computer in accordance with the present invention;

FIG. 6A is a flow chart of portions of the registration process for asingle board computer;

FIG. 7 illustrates a series of registration steps for a desktop app. inaccordance with the present invention;

FIG. 8 illustrates and defines steps in the 3D printing process inaccordance with the present invention:

FIG. 9 illustrates further steps in the registration process inaccordance with the present invention;

FIG. 10 illustrates steps with respect to connectivity of a registereddevice for 3D printing in accordance with the present invention;

FIG. 11 illustrates process steps with respect to 3D printing inaccordance with the present invention;

FIG. 12 illustrates steps with respect to connectivity of a desktop app.for 3D printing in accordance with the present invention:

FIG. 13 illustrates steps with respect to 3D printing from a desktopapp. in accordance with the present invention;

FIG. 14A is a first flow chart of a portion of the 3d printing processof the present invention;

FIG. 14B is a second flow chart of a portion of the 3d printing processof the present invention:

FIG. 15 illustrates a graphical user interface (GUI) screen inaccordance with the present invention, being usable to initiate signingin by a user;

FIG. 16 illustrates a graphical user interface screen usable for signingin of the user into the system;

FIG. 17 illustrates a graphical user interface screen of the presentinvention displaying a 3D print design, which design is available to beprinted by a signed-in user:

FIG. 18 illustrates a graphical user interface screen of the presentinvention displaying the 3D design of FIG. 17 after having been selectedby a signed-in user to be printed upon payment of the fee, and afteridentifying which printer of the user is to be used, which 3D designwill be protected against unauthorized redistribution in accordance withthe present invention;

FIG. 19 illustrates a second sign-in GUI screen that may be used for a3D print designer to sign in to upload his/her designs that are to beoffered for sale to registered users;

FIG. 20 is a GUI screen that may be used by 3D Print designers tomonitor sales of their uploaded designs; and

FIG. 21 is a schematic illustration showing an exemplary computing unitcapable of being programmed by the software instructions in accordancewith at least one embodiment of the present invention, and which mayinclude personal computers, cellular phones, and other mobile devices.

DETAILED DESCRIPTION OF THE INVENTION

As used throughout this specification, the word “may” is used in apermissive sense (i.e., meaning having the potential to), rather thanthe mandatory sense (i.e., meaning must). Similarly, the words“include”, “including”, and “includes” mean including but not limitedto.

The phrases “at least one”, “one or more”, and “and/or” are open-endedexpressions that are both conjunctive and disjunctive in operation. Forexample, each of the expressions “at least one of A, B and C”, “one ormore of A, B, and C”, and “A, B, and/or C” mean all of the followingpossible combinations: A alone; or B alone; or C alone; or A and Btogether; or A and C together; or B and C together; or A, B and Ctogether.

Also, all references (e.g., patents, published patent applications, andnon-patent literature) that are cited within this documents areincorporated herein in their entirety by reference.

Furthermore, the described features, advantages, and characteristics ofany particular embodiment disclosed herein, may be combined in anysuitable manner with any of the other embodiments disclosed herein.

The current 3D print market operates on a closed network, which lendsitself to certain solutions. Where the 3D print market would operate onan open network, other solutions may be utilized.

The present invention provides for the protection of source code for a3D design, and interacts with the operating system that controls a 3Dprinter, and/or controls a computer to which the 3D printer isconnected. The system may provide at least three different forms ofprotection for the source code.

In the first form of protection, the source code may be stored as codethat immediately deletes after the object is printed, or which codedeletes portions of the code as corresponding portions of the object areprinted (i.e., “Typology B” in FIG. 2).

In the second form of protection, the source code is stored in thecomputer and remains on the device, but is protected from beingredistributed (i.e., “Typology A” in FIG. 2).

In the third form the source code may be stored as code that utilizes acounter, so that the code automatically deletes after a specified timeperiod has elapsed, or which automatically deletes after apre-determined number of usages for printing of the object on the 3Dprinter has occurred (i.e., “Typology C” in FIG. 2). These three formsof protection permit 3D designs to be marketed and sold, particularlyonline, while serving to protect the intellectual property interest ofthe designer in his/her designs.

Another problem solved by the present invention is the provision of asystem that may universally accommodate all of the different types of 3Dprinters, and different 3D print objects, which require a different setup. There currently are seven different types of 3D printers:

-   -   Stereolithography (SLA)    -   Digital Light Processing (DLP)    -   Fused deposition modeling (FDM)    -   Selective Laser Sintering (SLS)    -   Selective laser melting (SLM)    -   Electronic Beam Melting (EBM)    -   Laminated object manufacturing (LOM)

All 3D printers are used by consumers by downloading digital files to anSD card and plugging the SD card into a printer, or by digitallydownloading the digital file and sending it to the printer. However, thedigital file must be adjusted at/for the printer physically by theconsumer. The STL file is processed by a piece of software called a“slicer,” which converts the model of the object into a series of thinlayers and produces a G-code file containing instructions to print theslices, which instructions are tailored to a specific type of 3D printer(e.g., an FDM printer). This G-code file can be printed using 3Dprinting client software (which loads the G-code, and uses it toinstruct the 3D printer during the 3D printing process). The 3D printershave no communication in or out because the industry is closed sourceand organizations have different designs for different printers. Evenwith current pay-to-print methods for existing products, the file isstill download and must be handled by the consumer and it is thereforenot protected.

Use of the methods described herein provide a full automated processwith respect to printing of a purchased design file without compromisingthe IP of the design, by protecting the STL data file, throughout theentire business process.

The three methods disclosed herein are not used/available at the presenttime because all printers are closed systems that don't protect thedesign through the whole business process. There is no existinguniversal plug for designers and various brands to make one design beprintable for all the different types of printers. The present inventionprovides that universal plug, and will create a new marketplace byallowing one design to be printed by all the different types of printerswith a click of a button. The herein disclosed physical method protectsdesigns on a card device, etc., and uses the same protection methodsallowing customers with designs for a physical object to freely marketthem while being protected, whereas they heretofore were unable toprevent them from unauthorized redistribution. The present inventionsprovides physical and/or electronic methods that allows for printing atdifferent locations, while still protecting the designs/code. Thisenables customers to print at kiosks if they don't want to purchase homeprinters, while enabling the code to be printed.

The first solution is a universal solution that uses a communicationtool that plugs into a printer and delivers the correct code for adesign to the printer being used, creating an automated process wherethe consumer can print with just a press of a button, and not have toadjust the printer(s) and/or the code. FIG. 1 illustrates a new computersystem 100, and a new 3D Printer 200, each of which may be configured tobe controlled by a print card 15, referred to as a raspberry pie. Thecomputer 100 may include a slot 101, which may be configured to receivethe print card 15 therein. The print card 15 may act as an inventory anddistribution system for STL files or other such files containingprintable 3D data. The print card 15 may also manipulate the operatingsystem of the computer 100 to perform printing according to the threetypologies defined above, which may be encoded into the print cardaccording to the characteristics paid for at the time of purchase (i.e.,permission to print 2 copies of the object before the code is deleted).Use of the print card may require a personal identification number (PIN)that may be assigned at the time the card is purchased, or at some latertime.

In one embodiment of the print card, an analogy may be drawn between theprint card of the present invention, and a bank debit card, where alongwith use of a personal identification number (PIN), the user is allowedto shop via an app/gateway within an online cloud store, and make securepurchases of the source code for a desired 3D object, the printing ofwhich is controlled according to the above-noted methods. The DRMassociated with the purchased code is then stored on the card. The cardpermits access to the online cloud store.

The operating system of the computer 100, which may be manipulated bythe print card 15, may allow the user to see the inventory of designsstored on the card, and may also allow the user to browse and downloadprintable 3D designs using an application program (“App”) that similarlyprotects the designs. The computer, under the control of theprint-card-manipulated operating system, may send the digital filedefining the 3D object to a 3D printer. The operating system of the 3Dprinter 200 may also correspondingly be manipulated by the print card 15according to the purchased typology (“A” or “B” or “C” in FIG. 2),particularly if it has its own memory.

A unique 3D printer 200 may also be configured to print designs directlyusing the print card 15, as the printer 200 may similarly be configuredwith a slot 201 that may receive the card therein. The print card 15 mayhave structure similar to, and may also be configured to operate in amanner similar to, a USB flash drive, as shown for example by U.S. Pat.No. 6,763,410 to Yu; U.S. Pat. No. 6,733,329 to Yank; and U.S. Pat. No.7,287,705 to Tang. The corresponding slots 101 and 201 may thus beconfigured to read the data from the card 15 being so structured, tooperate as described herein.

FIG. 3 illustrates how 3D printing works based on a single boardcomputer (SBC) device, which may have an embedded Wi-Fi module forinternet connectivity, and which may connect with a 3D printer through aUSB interface. The SBC device should have 2-way communication with the3D printer device to be able to send print commands thereto. In oneembodiment, customers can browse through different 3D models availablefor 3D printing from a library of such models. All 3D models may beuploaded by designers into the library through an independent designerweb portal. Users of the system of the present invention can purchase amodel and print it by sending an instruction to their purchased SBCdevice from the user website over the internet. In one embodiment theunique SBC device may connect with any supported 3D printer through aUSB cable/port. The current methodologies in practice for 3D printingdon't allow direct prints to be made on the 3D printer. The SBC deviceconnected with the 3D printer may also be connected with the internet,which will enable the printer to act as an IOT device. Users can thendirectly print the files from an associated web portal, and the SBCdevice may not be directly connected with the user's computer. This alsotakes out the device/platform dependence for the selection of 3D prints,it can be accessed from any web enabled device including computers,laptops, tablets and mobile phones. In current practice, users downloadthe 3D print files and then manually have to print the 3D object, thistakes out the hassle and users with a beginner's skill level can easilyprint the files. And it also helps secure the 3D printable files, as thefiles are never accessible to the user and never transferred to theprinter's memory, this helps achieve the Pay Per Print business model ofthe present invention.

FIG. 4 further illustrates how 3D printing works using a desktop app,associated with the present invention. An independent desktopapplication may be made available for different platforms, including OSX, and Microsoft Windows. The app. can have a complete graphic userinterface (GUI) for the 3D printing customers. A light version of theApp may be configured to always be running on the device and may beaccessed from a toolbar/status bar. Customers can browse throughdifferent 3D models available for print on the website or through thefull version of the App. User can purchase a model and print it bysending an instruction to their connected 3D printer from the desktop orthrough the user website. A desktop application may be used for slicingand then transferring printable files to the printer, however thedesktop application of the present invention also allows user to browsethrough a list of available 3D printable models and then print any ofthe models. The ‘light version’ of the app helps achieve the “print fromanywhere” model of the present invention, if users have this appinstalled and has it registered under the registered account they cansend prints to the printer connected with this application. Users candirectly print the files from the web portal, by selecting thisapplication under the list of connected printers. In current practices,users download the files and then manually have to print the 3D object,this takes out the hassle and users can print the files with abeginner's skill level. It also helps secure the 3D printable files, asthe files are never accessible to the user and never transferred to theprinter's memory, this also helps to achieve the Pay Per Print businessmodel.

FIG. 5 illustrates a first series of registration steps for a singleboard computer in accordance with the present invention. When the SBCdevice is manufactured and prepared for market, it should first completea device registration process as follows. The SBC device may call aninternal server and request and receive a unique hardware ID for thedevice, which ID may be a long alphanumeric string. This is designed toprevent brute force attacks and Denial of Service (DoS) attacks on theCentral (Intigo) server. Once a unique Id is received by the device, thedevice should call the central Intigo server along with a secret keyknown only by the device, to register itself as an available device. Thesecret key may be securely embedded in the software; it may beencrypted, and may be a very long sequence of alpha-numeric characters,much like an SSL public/private key, an example of which follows:

-   -   MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIS2qgprFqPxECAggA        MBQGCCqGSIb3DQMHBAgD1kGN4Zs1JgSCBMi1xk9jhlPxP3FyaMIUq8QmckXCs3Sa        9g73NQbtqZwI+9X5OhpSg/2ALxlCCjbqvzgSu8gtFZ4yo+Xd8VucZDmDSpzZGDod        The central server returns private key certs, a client ID and a        unique public identifier. Each device can only be registered        once, to prevent bloating on AWS devices gateway. The internal        server is designed for internal access only; this is primarily        to be used in SBC device provisioning once the device is        prepared for market. The device may connect with the internal        server using the internet over a secure HTTPs connection which        is accessible only from allowed IP addresses, and the internal        server assigns a unique hardware id for the device (which can        also be accessed by the Central server). Once the hardware id is        assigned to the device, the SBC device can now be registered as        a thing through the central server. The purpose of having an        internal server for hardware ID is to prevent brute force        attacks on the system, as a device can be registered using any        SBC ID as reference and there is no way to validate the IDs sent        to the server. The internal server generates a unique system        known hardware ID for the devices. The internal server may be        placed inside the vicinity where the SBC devices will be        manufactured/prepared for market, or it can be cloud based with        access limited to certain IP locations known to the system. The        reason for using an “internal server” and the “central server”        is so that the internal server is only used to generate hardware        IDs for the SBC devices or license numbers for the desktop        applications. The purpose of internal server is to control the        access to the server that prevents fake device registrations.        The central server is accessible publically and serves all the        content for web portals and manages the print system. For        devices the central server only accepts incoming web calls        having a registered hardware id. The two servers will preferably        be separated and all the portals will only have access to the        central server, which is primarily for security; the internal        server if made public can be used for brute force to bloat the        database and to have denial of service attacks on the complete        system. With respect to the use of both a “private key” and a        “public identifier,” the devices connect with an AWS device        Gateway through the MQTT protocol over TLS 1.2 to establish a        connection. The device uses CA Certs, which are installed on the        device to validate the authenticity of devices gateway, and then        uses both Private key and Public Pem files to verify its        identity for the connection.

FIG. 6 illustrates a second series of registration steps for a singlecomputer in accordance with the present invention. The central servermay expose a public API for devices which can be accessed over a securechannel. The API takes the secret key, and hardware id to validate therequest and process the registration on an Amazon Web Services (AWS) IOTdevices gateway. The API returns the private key certs, client ID andunique public identifier which will be stored permanently on the device.The central server may call AWS IOT services using a restful API andregister the device as a thing on things gateway. The central server mayregister all the devices on AWS IOT and also generates a human readableclient id, which becomes the identity of the device. When the user wantsto connect that specific device with their registered account, they willuse this client ID. Note—the AWS IOT is a service that enables us tosend and receive notifications to the devices. The devices areregistered on AWS, however client IDs are saved on the central server.And also controls the information regarding which device is beingconnected to what user account.

FIG. 7 illustrates a series of registration steps for a desktop app. inaccordance with the present invention. Users can download the desktopApp through respective App stores e.g. App Store for OS X and WindowsStore for Windows based systems. Each desktop App may have a uniquelicense key and may be activated when the user logs in to the App. TheApp connects with the central (Intigo) licensing server to check theauthentication and validity of desktop App. The desktop App onceconnected with the user account will have synced data and the user canselect the App from the list of printer devices on the user web portal.

FIG. 8 illustrates and defines steps in an embodiment of the 3D printingprocess in accordance with the present invention. All the 3D models areupload by designers through a dedicated designer web portal. Designerscan register on the portal through an invite or by accessing the portaland signing up using an email address. Users can browse throughavailable 3D models through a Website from their personal computers,laptops or mobile device or through a platform specific Mobile App, e.g.iOS App, Android App, Windows 10 App. Users can view details of each 3Dmodel; the details may include 3D view(s) of the model, an image galleryof the model from different angles. User can also select the models forPrint from the model detail screen. To print a model users must belogged into the user. The print feature will only be available forregistered users. When the user clicks Print, the system will check forthe an available device. If the user has no registered device or anyconnected desktop App, the user will be prompted to add a device withinstruction on how to get a device or the desktop application. If thereare devices connected with the user's account, the user is prompted witha drop down list to select the device or the connected desktop App.After selecting the device or desktop App, the user will have to enterPayment details or an option to use a previously saved payment method.Once payment is successful, print notification is sent to the selecteddevice or desktop App. The user will have to pay for each print; eachnew print will only initiate once payment is successful. If the userselects a previously printed model they will have to pay for the printagain. The print price may be controlled through an Admin portal, it canbe same price for all the models or each model can have an independentprice for print.

FIG. 9 illustrates further steps in a registration process in accordancewith the present invention. Once a device is purchased by the user, theuser should connect the device with their registered Intigo account.(Note—the device registration process is for provisioning new devices onthe system independent of the user, once the device is registered and aclient II) is allocated, it can then be connected with a registeredIntigo user account, and the user can register for an account throughweb portal/application, signing up using email address, and can have anaccount without any device being connected). The user can use the uniquepublic identifier and enter the client ID printed on the device into aweb portal to connect the device, and this process can also be achievedby printing a QR code on the device with an embedded identifier so theusers won't have to manually add the code. Once the device is connectedwith a user, it can't be connected with any other user and the device ismarked as an active device until the user deliberately transfers thedevice to another account.

FIG. 10 illustrates steps with respect to connectivity of a registereddevice for 3D printing in accordance with the present invention. TheSingle Board Computer (SBC) device may implement an IOT device sdk inthe device or use Python libraries to constantly listen for newnotifications over internet using the MQTT protocol. The MQTT is a lowbandwidth, lightweight protocol that works on top of the TCP/IPprotocol. Once the device is marked as active on the server, i.e., it isconnected with a user, it can be used to print 3D models. Every timeuser purchases a print and sends the instructions to print, thisconnected device will get a notification over MQTT. The notificationwill only tell the device that a new print is available for the user andsend a single-time access token along with printable model ID for theuser. The central server will maintain all the configuration settingsconfigured by the user for printing, including print quality, in-filldensity and temperature settings; these will be used by the device togenerate 3D printer readable gCode. In this embodiment the token may bea digital entity, which may be an encoded string, that may be used bythe central server to identify and verify access to the system. Anexample of the access token follows:

EAAXK30wgRWcBAGVtmRGkvFGxQG1NPnLZBmi9VYeZCZAKRUHkLEYfdXBiSLTNRW4Ic84mqivrp31X0g1WzbZBNhaDv21hz6vNkzZBhmyBx7PBXU9VBJoBSjKFRdineA7iSmeliAFtD4HI0I0veZBX4VVi3CRQHF4nZBwjtdnz9EliQa1KLy8sVXsWp6CU50X6aTm6GIrRRFSUuwVZA85LZAbQBwHjSrpE0ReAYpBMCKoYCm3pQZDZD

In one embodiment, the access token may be usable for a limited time, orfor a single time, or for different types of access to the system.

FIG. 11 illustrates other aspects with respect to 3D printing inaccordance with the present invention. Once print notification isreceived on the device along with a single-time access token, the devicemay communicate with the central server using the HTTP protocol using asecure public API. The central server returns the printable file to thedevice over a secure channel and also sends all the user selectedconfigurations for gCode generation. Once the device successfullydownloads the file and converts the code it notifies the system usingthe MQTT protocol, and a notification is sent to user that the file isready to be printed. After successfully printing of the model, thedevice notifies the system over the secure channel and deletes the filesfrom it's internal storage. For each new print the user will have tofollow the process again and purchase the rights to print the fileagain.

FIG. 12 describes other aspects with respect to connectivity of adesktop app. for 3D printing in accordance with the present invention.The Desktop App may contain a full version and a light version runningas a service and can be accessed through a toolbar/status bar, and maystart on each boot up of the desktop. This may always be running in thebackground even if the fill version of the App is not running on user'sdesktop. The App may implement a Push notification system to getnotifications from the Intigo Server. Once a desktop App is markedActive on the server, i.e. it is connected with a user, it can be usedto print 3D models. Every time a user purchases a 3D print and sends theinstructions to print by selecting the desktop App from the drop downlist, the desktop App will get a notification. The desktop App may alsocheck for any pending notifications on startup to check for missednotifications. The notification will only tell the App that a new printis available for the user and may send a single-time access token alongwith a printable model ID for the user. The central server may maintainall the configuration settings configured by the user for printincluding print quality, in-fill density and temperature settings; thesemay be used by the device to generate 3D printer readable gCode.

FIG. 13 describes other aspects with respect to 3D printing from adesktop app. in accordance with the present invention. Once printnotification is received on the App along with a single-time accesstoken, the device communicates with the central server over the HTTPSprotocol using a secure public API. The central server may return theprintable file to the device over a secure channel and also sends allthe user selected configurations for gCode generation and if gCode fileis available it will send a link to the downloadable gCode file. The Appmay then check for connected printers over USB. The App will then startprinting the file and will show the status of the print. Aftersuccessful printing of the model, the App notifies the system over thesecure channel and deletes the files from it's cache. For eachadditional 3D print the user will have to follow the process again andpurchase the rights to print the file again.

In one embodiment of the invention, as shown in FIG. 6A, a computersystem may be configured for a method of controlling use of downloadableproprietary source code defining 3-D object data usable for printing theobject on a 3D printer. The computer system may include a first(internal) server, a second (central) server, and a single boardcomputer. The first server, the second server, and the single boardcomputer (SBC) may each include: a central processing unit and anon-transitory computer-readable storage medium (CRSM) comprisinginstructions to program the first server, second server, and singleboard computer, respectively. The instructions on the CRSM of the SBCmay be configured to request a unique hardware ID from the first server,and the instructions on the CRSM of the first server may be configuredto assign and send a unique hardware ID to the SBC. The CRSM of thefirst server may also be configured to send the newly assigned uniquehardware ID to the second server. The instructions on the CRSM of theSBC may be configured to submit the unique hardware ID and a secret keyto the second server to request registration of a user and a printerwith the second server, and the instructions on the CRSM of the secondserver may be configured to send private certs, a client ID, and aunique public identifier to the SBC in response. The instructions on theCRSM of the second server configure the second server to receive andstore the code defining 3D print designs from registered designersthrough a web designer portal, and to on-demand display the 3D printdesigns in a GUI screen (e.g., FIG. 17). The instructions on the CRSM ofthe SBC may be configured for a registered user to purchase a quantityof 3D print designs in the GUI, and the instructions on the CRSM of thesecond server may be configured to send an access token to the SBC inresponse to the purchase. The instructions on the CRSM of the SBC may beconfigured for redeeming the access token for a selected 3D printdisplayed in the GUI, and the instructions on the CRSM of the secondserver may be configured to adjust gcode of the selected 3D design forthe particular printer(s) that was identified by the user during theregistration or at a later time, and to stream the adjusted gcode tothat printer. Note that more than one 3D printer type may be registeredand used, and the system will provide adjusted gcode for the selectedfor the print. In one embodiment the CRSM of the second server may beconfigured to stream the adjusted gcode to the printer through the SBC,as shown in FIG. 6A, with Https streaming over a web connection to theSBC device either and internet connection provided to the SDC device, orWi-Fi, or physical cable. The MQTT protocol may be used for messagingand notifications not data transfer. In another embodiment the CRSM ofthe second server may be configured to stream the adjusted gcodedirectly to the printer.

The computer system disclosed herein, and corresponding software, mayinclude components of any standard computing device, such as a server, atablet, a cell phone, or other mobile smart device, so a description ofsuch an accessorized exemplary computer system is hereinafter disclosed,even though a particular embodiment may not require all of the describedcomponents. Exemplary computer system 200 (i.e., a client deviceassociated with a particular user) is shown schematically in FIG. 21,and which may comprise computing unit 201 interacting with externalperipherals 202, such as a separate touch screen display 244, andinteracting with network resources 203, including use of the internet261, and other computers (or other client devices or a server), whichmay be a laptop computer 262 (i.e., a second client device associatedwith a second user), a smart phone 263 (i.e., a third client deviceassociated with a third user), a server 264, etc.

The computing unit 201 may include a data bus 224 for communicatinginformation across and among various parts of computing unit 201, and acentral processing unit, which may be a microprocessor (hereinafter“processor” or “CPU”) 222 coupled with a bus 224 for processinginformation and performing other computational and control tasks.Computing unit 201 may also include a volatile storage 225, such as arandom access memory (RAM) or other dynamic storage device, coupled tobus 224 for storing various information as well as instructions to beexecuted by processor 222. The volatile storage 225 may also be used forstoring temporary variables or other intermediate information duringexecution of instructions by processor 222. Computing unit 201 mayfurther include a read only memory (ROM) or an erasable programmablememory (EPROM) 227 or other static non-transitory storage device coupledto bus 224 for storing static information and instructions for processor222, such as basic input-output system (BIOS), as well as various systemconfiguration parameters. A persistent storage device or non-volatilememory 226, such as a magnetic disk, optical disk, or solid-state flashmemory device may be provided and may be coupled to bus 224 for storinginformation and instructions.

Computing unit 201 may be coupled via bus 224 to an integral display221, possibly a touch-screen display, for use in displaying informationto a user. If desired, computing unit 201 may be coupled via bus 224 toan external display screen 244. An external input device 243 (e.g., astandard keyboard) may be coupled to bus 224 for communicatinginformation and command selections to processor 222. A cursor controldevice 242, such as a mouse, a trackball, or cursor direction keys, maybe used for communicating direction information and command selectionsto processor 222 and for controlling cursor movement on display 244. Anexternal storage device 241 may be connected to the computing unit 201via bus 224 to provide an extra or removable storage capacity for thecomputing unit 201, which may be used to facilitate exchange of datawith other computer systems.

Some of the techniques herein may be performed by computing unit 201 inresponse to processor 222 executing one or more sequences of one or moreinstructions contained in the volatile memory 225. Execution of thesequences of instructions contained in a non-transitory memory may causeprocessor 222 to perform the process steps described herein. Inalternative embodiments, specific hard-wired digital circuitry may beused in place of, or in combination with, software instructions toimplement the invention.

The term “computer-readable medium” as used herein refers to any mediumthat participates in providing instructions to processor 222 forexecution. The computer-readable medium is just one example of amachine-readable medium, which may carry instructions for implementingany of the methods and/or techniques described herein. Various forms ofcomputer readable media may contain one or more sequences of one or moreinstructions for the processor 222 to execute, including non-volatilemedia (storage device 226), and volatile media (storage device 225).Common forms of non-transitory computer-readable media include, forexample, a floppy disk, a hard disk, magnetic tape, or any othermagnetic medium, a CD-ROM, a flash drive, and a memory card.

The computing unit 201 may thus also include a communication interface,such as network interface card 223 coupled to the data bus 222.Communication interface 223 may provide a two-way data communicationcoupling to a network link that may be connected to a local network. Forexample, communication interface 223 may be an integrated servicesdigital network (ISDN) card or a modem to provide a data communicationconnection to a corresponding type of telephone line, or it may be alocal area network interface card (LAN NIC) to provide a datacommunication connection to a compatible LAN.

Network link 223 also typically provides data communication to othernetwork resources. For example, the network link may provide aconnection over the internet 261 to the world-wide-web. Thus, thecomputing unit 201 can access resources located anywhere using theInternet 261. Also, the computing unit 201 may also be accessed by, orcommunicate with, other computers (e.g. 262), or another smart device(e.g., smartphone 263), generally with permission, and which may belocated anywhere with access to the internet 261.

While illustrative implementations of one or more embodiments of thepresent invention are provided hereinabove, those skilled in the art andhaving the benefit of the present disclosure will appreciate thatfurther embodiments may be implemented with various changes within thescope of the present invention. Other modifications, substitutions,omissions and changes may be made in the design, size, materials used orproportions, operating conditions, assembly sequence, or arrangement orpositioning of elements and members of the exemplary embodiments withoutdeparting from the spirit of this invention.

Accordingly, the breadth and scope of the present disclosure should notbe limited by any of the above-described example embodiments, but shouldbe defined only in accordance with the following claims and theirequivalents.

What is claimed is:
 1. A computer system configured for a method ofcontrolling use of downloadable proprietary source code defining 3-Dobject data usable for printing the object on a 3D printer, saidcomputer system comprising: a first server, said first servercomprising: a first central processing unit and a first non-transitorycomputer-readable storage medium comprising instructions to program saidfirst server; a second server, said second server comprising: a secondcentral processing unit and a second non-transitory computer-readablestorage medium comprising instructions to program said second server; asingle board computer (SBC), said SBC comprising: a third centralprocessing unit and a third non-transitory computer-readable storagemedium (CRSM) comprising instructions to program said SBC; wherein saidinstructions on said third CRSM are configured to request a uniquehardware ID from said first server, and said instructions on said firstCRSM are configured to assign and send the unique hardware ID to saidSBC; wherein said instructions on said third CRSM are configured tosubmit the unique hardware ID and a secret key to said second server torequest registration of a user and a printer with said second server,and said instructions on said second CRSM are configured to send privatecerts, a client ID, and a unique public identifier to said SBC; whereinsaid instructions on said second CRSM configure said second CRSM toreceive and store one or more 3D print designs through a web designerportal, and to on-demand display the 3D print designs in a GUI screen;wherein said instructions on said third CRSM are configured forpurchasing a quantity of the 3D print designs in the GUI, and saidinstructions on said second CRSM are configured to send an access tokento said SBC in response to said purchasing; wherein said instructions onsaid third CRSM are configured for redeeming the access token for aselected 3D print displayed in said GUI, and said instructions on saidsecond CRSM are configured to adjust gcode of the selected 3D design forthe printer, and to stream the adjusted gcode to the printer throughsaid SBC.
 2. The computer system according claim 1, wherein saidresponse to said purchasing is sent using the MQTT protocol.
 3. Thecomputer system according claim 1, wherein said access token comprisesan alpha-numeric sequence.